package com.itany.corejava.code10_异常;

/**
 * @author 石小俊
 * 2024年07月26日 9:01
 */
public class Test03_捕获多种异常 {

    public static void main(String[] args) {
        test01();
    }

    public static void test01() {
        try {
            int i = 1 / 1;
            int[] arr = {1, 2, 3};
            //System.out.println(arr[3]);
            String s = null;
            //System.out.println(s.equals("null"));
            System.out.println(Integer.parseInt("abc"));
        } catch (ArithmeticException e) {
            // 在捕获异常时,可以通过多个catch去捕获多种异常
            // 但是,捕获异常时必须从小到大进行捕获
            // 如果捕获了某个大的异常,后面就不能再捕获该异常的子孙异常
            // 如果大的在前面进行捕获,当捕获到异常之后就不会再执行后面的捕获操作
            // 因此,后面子孙异常永远不会执行
            System.out.println("算术异常");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组下标越界");
        } catch (NullPointerException e) {
            System.out.println("空指针异常");
        } catch (NumberFormatException e) {
            System.out.println("数字格式异常");
        } catch (Exception e) {
            System.out.println("服务器内部异常");
        }

    }

    public static void test02() {
        try {
            int i = 1 / 1;
            int[] arr = {1, 2, 3};
            //System.out.println(arr[3]);
            String s = null;
            //System.out.println(s.equals("null"));
            System.out.println(Integer.parseInt("abc"));
        } catch (ArithmeticException | ArrayIndexOutOfBoundsException | NullPointerException | NumberFormatException e) {
            // 当多种异常的处理方式是一致的时候
            // 可以通过|表示或者的意思
            // 只要异常在这些异常的范围中,均会被捕获
            System.out.println("捕获到了异常");
        }

    }

}
